home *** CD-ROM | disk | FTP | other *** search
/ Software of the Month Club 2000 October / Software of the Month - Ultimate Collection Shareware 277.iso / pc / PROGRAMS / UTILITY / WINLINUX / DATA1.CAB / usr_-_Usr_Files / INCLUDE / VGAGL.H < prev    next >
C/C++ Source or Header  |  1999-09-17  |  6KB  |  187 lines

  1. /* Graphics Library headerfile */
  2.  
  3. #ifndef VGAGL_H
  4. #define VGAGL_H
  5.  
  6. #ifdef __cplusplus
  7. extern "C"
  8. {
  9. #endif
  10.  
  11.  
  12. /* Graphics context */
  13.  
  14. #define CONTEXT_VIRTUAL        0x0
  15. #define CONTEXT_PAGED        0x1
  16. #define CONTEXT_LINEAR        0x2
  17. #define CONTEXT_MODEX        0x3
  18. #define CONTEXT_PLANAR16    0x4
  19.  
  20. #define MODEFLAG_PAGEFLIPPING_CAPABLE        0x01
  21. #define MODEFLAG_TRIPLEBUFFERING_CAPABLE    0x02
  22. #define MODEFLAG_PAGEFLIPPING_ENABLED        0x04
  23. #define MODEFLAG_TRIPLEBUFFERING_ENABLED    0x08
  24. #define MODEFLAG_FLIPPAGE_BANKALIGNED        0x10
  25. /*
  26.  * The next two can never occur together, thus we use the same flag
  27.  * (as svgalib does).
  28.  */
  29. #define MODEFLAG_32BPP_SHIFT8            0x20
  30. #define MODEFLAG_24BPP_REVERSED            0x20
  31.  
  32.     typedef struct {
  33.     void (*driver_setpixel_func) (int, int, int);
  34.     int (*driver_getpixel_func) (int, int);
  35.     void (*driver_hline_func) (int, int, int, int);
  36.     void (*driver_fillbox_func) (int, int, int, int, int);
  37.     void (*driver_putbox_func) (int, int, int, int, void *, int);
  38.     void (*driver_getbox_func) (int, int, int, int, void *, int);
  39.     void (*driver_putboxmask_func) (int, int, int, int, void *);
  40.     void (*driver_putboxpart_func) (int, int, int, int, int, int, void *,
  41.                     int, int);
  42.     void (*driver_getboxpart_func) (int, int, int, int, int, int, void *,
  43.                     int, int);
  44.     void (*driver_copybox_func) (int, int, int, int, int, int);
  45.     } framebufferfunctions;
  46.  
  47.     typedef struct {
  48.     unsigned char modetype;    /* virtual, paged, linear, mode X */
  49.     unsigned char modeflags;    /* or planar16 */
  50.     unsigned char dummy;
  51.     unsigned char flippage;
  52.     int width;        /* width in pixels */
  53.     int height;        /* height in pixels */
  54.     int bytesperpixel;    /* bytes per pixel (1, 2, 3, or 4) */
  55.     int colors;        /* number of colors */
  56.     int bitsperpixel;    /* bits per pixel (8, 15, 16 or 24) */
  57.     int bytewidth;        /* length of a scanline in bytes */
  58.     char *vbuf;        /* address of framebuffer */
  59.     int clip;        /* clipping enabled? */
  60.     int clipx1;        /* top-left coordinate of clip window */
  61.     int clipy1;
  62.     int clipx2;        /* bottom-right coordinate of clip window */
  63.     int clipy2;
  64.     framebufferfunctions ff;
  65.     } GraphicsContext;
  66.  
  67.     extern GraphicsContext currentcontext;
  68.  
  69. #define BYTESPERPIXEL (currentcontext.bytesperpixel)
  70. #define BYTEWIDTH (currentcontext.bytewidth)
  71. #define WIDTH (currentcontext.width)
  72. #define HEIGHT (currentcontext.height)
  73. #define VBUF (currentcontext.vbuf)
  74. #define MODETYPE (currentcontext.modetype)
  75. #define MODEFLAGS (currentcontext.modeflags)
  76. #define BITSPERPIXEL (currentcontext.bitsperpixel)
  77. #define COLORS (currentcontext.colors)
  78.  
  79. #define __clip (currentcontext.clip)
  80. #define __clipx1 (currentcontext.clipx1)
  81. #define __clipy1 (currentcontext.clipy1)
  82. #define __clipx2 (currentcontext.clipx2)
  83. #define __clipy2 (currentcontext.clipy2)
  84.  
  85.  
  86. /* Configuration */
  87.  
  88.     int gl_setcontextvga(int m);
  89.     int gl_setcontextvgavirtual(int m);
  90.     void gl_setcontextvirtual(int w, int h, int bpp, int bitspp, void *vbuf);
  91.     void gl_setcontextwidth(int w);
  92.     void gl_setcontextheight(int h);
  93.     GraphicsContext *gl_allocatecontext(void);
  94.     void gl_setcontext(GraphicsContext * gc);
  95.     void gl_getcontext(GraphicsContext * gc);
  96.     void gl_freecontext(GraphicsContext * gc);
  97.  
  98. /* Line drawing */
  99.  
  100.     void gl_setpixel(int x, int y, int c);
  101.     void gl_setpixelrgb(int x, int y, int r, int g, int b);
  102.     int gl_getpixel(int x, int y);
  103.     void gl_getpixelrgb(int x, int y, int *r, int *g, int *b);
  104.     int gl_rgbcolor(int r, int g, int b);
  105.     void gl_hline(int x1, int y, int x2, int c);
  106.     void gl_line(int x1, int y1, int x2, int y2, int c);
  107.     void gl_circle(int x, int y, int r, int c);
  108.  
  109. /* Box (bitmap) functions */
  110.  
  111.     void gl_fillbox(int x, int y, int w, int h, int c);
  112.     void gl_getbox(int x, int y, int w, int h, void *dp);
  113.     void gl_putbox(int x, int y, int w, int h, void *dp);
  114.     void gl_putboxpart(int x, int y, int w, int h, int bw, int bh, void *b,
  115.                int xo, int yo);
  116.     void gl_putboxmask(int x, int y, int w, int h, void *dp);
  117.     void gl_copybox(int x1, int y1, int w, int h, int x2, int y2);
  118.     void gl_copyboxtocontext(int x1, int y1, int w, int h, GraphicsContext * gc,
  119.                  int x2, int y2);
  120.     void gl_copyboxfromcontext(GraphicsContext * gc, int x1, int y1, int w, int h,
  121.                    int x2, int y2);
  122. /* The following functions only work in 256-color modes: */
  123.     void gl_compileboxmask(int w, int h, void *sdp, void *ddp);
  124.     int gl_compiledboxmasksize(int w, int h, void *sdp);
  125.     void gl_putboxmaskcompiled(int x, int y, int w, int h, void *dp);
  126.  
  127. /* Miscellaneous */
  128.  
  129.     void gl_clearscreen(int c);
  130.     void gl_scalebox(int w1, int h1, void *sb, int w2, int h2, void *db);
  131.     void gl_setdisplaystart(int x, int y);
  132.     void gl_enableclipping(void);
  133.     void gl_setclippingwindow(int x1, int y1, int x2, int y2);
  134.     void gl_disableclipping(void);
  135.  
  136. /* Screen buffering */
  137.  
  138.     void gl_copyscreen(GraphicsContext * gc);
  139.     void gl_setscreenoffset(int o);
  140.     int gl_enablepageflipping(GraphicsContext * gc);
  141.  
  142. /* Text */
  143.  
  144. /* Writemode flags. */
  145. #define WRITEMODE_OVERWRITE 0
  146. #define WRITEMODE_MASKED 1
  147. #define FONT_EXPANDED 0
  148. #define FONT_COMPRESSED 2
  149.  
  150.     void gl_expandfont(int fw, int fh, int c, void *sfdp, void *dfdp);
  151.     void gl_setfont(int fw, int fh, void *fdp);
  152.     void gl_colorfont(int fw, int fh, int c, void *fdp);
  153.     void gl_setwritemode(int wm);
  154.     void gl_write(int x, int y, char *s);
  155.     void gl_writen(int x, int y, int n, char *s);
  156.     void gl_setfontcolors(int bg, int fg);
  157.  
  158. /* gl_printf is only available in ELF libraries!! */
  159.     int gl_printf(int x, int y, const char *fmt,...);
  160.  
  161.     extern unsigned char *gl_font8x8;    /* compressed 8x8 font */
  162.  
  163. /* 256-color Palette */
  164.  
  165.     typedef struct {
  166.     struct {
  167.         unsigned char red;    /* 6-bit values */
  168.         unsigned char green;
  169.         unsigned char blue;
  170.     } color[256];
  171.     } Palette;
  172.  
  173.     void gl_setpalettecolor(int c, int r, int b, int g);
  174.     void gl_getpalettecolor(int c, int *r, int *b, int *g);
  175.     void gl_setpalettecolors(int s, int n, void *dp);
  176.     void gl_getpalettecolors(int s, int n, void *dp);
  177.     void gl_setpalette(void *p);
  178.     void gl_getpalette(void *p);
  179.     void gl_setrgbpalette(void);
  180.  
  181.  
  182. #ifdef __cplusplus
  183. }
  184.  
  185. #endif
  186. #endif
  187.